// 从数组中找出两数相加等于特定值的下标
// [2, 3, 5, 7]  9     => [0, 3]
function getArrResult(arr, target) {
    let map = new Map()
    for(let i = 0; i < arr.length; i++) {
        let tmp = target - arr[i]
        if (map.has(tmp)) {
            return [map.get(tmp), i]
        } else {
            map.set(arr[i], i)
        }
    }
    return []
}

{
    // 异或运算交换两个数的值    异或位运算  相同为0，不同为1，也可理解为不进位相加  多个数异位满足交换律和结合律
    // ** a 和 b 可以相等，但必须是两个不同的内存空间
    let a = 10;
    let b = 13;
    a = a ^ b;
    b = a ^ b;
    a = a ^ b;
    console.log(a)
    console.log(b)

    // 取反~  与&(都为1才是1)  异或^
    // 提取二进制最右侧第一个1在哪
    // let rightOne = eor & (~eor + 1)
}